// 标准库入口设计
package stdlib

// 核心模块注册器
type StdLib struct {
	modules map[string]Module
}

func NewStdLib() *StdLib {
	return &StdLib{
		modules: make(map[string]Module),
	}
}

// 模块接口定义
type Module interface {
	Name() string
	Exports() map[string]interface{}
}

// 注册标准模块
func (sl *StdLib) RegisterModule(m Module) {
	sl.modules[m.Name()] = m
}

// 获取模块导出
func (sl *StdLib) GetExport(module, name string) (interface{}, bool) {
	mod, exists := sl.modules[module]
	if !exists {
		return nil, false
	}
	exp, exists := mod.Exports()[name]
	return exp, exists
}
